NetBSD on Pinebook
https://gyazo.com/95a4f32ba251792f3d0da01fb1fc9d0e
はじめに
ここでは、PinebookをNetBSDで使う方法について解説します。
参考文献
Pinebookって?
64bit ARM Quad Core
お値段:$99.99!!
https://www.pine64.org/wp-content/uploads/2019/04/Pinebook_11.6inch.jpg
*BSD on Pinebook
Pinebookでは、以下のようなBSD OSが動作します。
NetBSD
FreeBSD
OpenBSD
ここでは、PinebookでNetBSDを動かすための情報を紹介します。
NetBSD on Pinebook
NetBSDをPinebookで動かすためには、以下のような方法があります。
公式インストーラーに、Community Buildイメージあり
一切pkgおよびpkgsrcの入っていない、硬派なイメージです
でも、バージョンが若干古いです
https://gyazo.com/cf4934cdb8f8989deac8503af0b09386
ebijunさんが現状をまとめている
他にmicroSDに焼くだけで利用可能なイメージもある
Community Buildと同じでOS部分のみのインストールだが、最新のNetBSD buildが使える
NetBSDシステム情報
今は、cpu0-3全部動いてます
HDMIからの外部出力もできています
code:xrandr
pinebook% xrandr
Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 3840 x 2160
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 256mm x 144mm
1920x1080 59.93*+ 48.00
HDMI-1 connected 1280x720+1920+0 (normal left inverted right x axis y axis) 698mm x 393mm
1280x720 60.00*+ 30.00 59.94 29.97
1920x1080 60.00 59.94 30.00 24.00 29.97 23.98
1400x1050 59.95
1280x1024 60.02
1360x768 60.02
1024x768 75.08 70.07 60.00
800x600 72.19 75.00 60.32 56.25
720x480 60.00 59.94
640x480 75.00 72.81 60.00 59.94
720x400 70.08
sysctl -a
NetBSD pkg/pkgsrc
以下のように、pkgやpkgsrcが提供されています。
pkg
ブラウザは、www/firefox52やwww/seamonkeyが使える
日本語Input Methodは、ibus-anthyが使える
pkgsrc
NetBSDでのXorg関連の設定
Xorgでは、以下のような設定をすると良いでしょう。
キーボードレイアウトの設定(altgr-intl at /etc/X11/xorg.conf.d/00-system-keyboard.conf)
左シフト右横の刻印[\(|)]のキーが、実際には[<(>)]になっている
Variant" "altgr-intl
code:xorg.conf
Section "InputDevice"
Identifier "Pinebook 1080p keyboard"
Driver "kbd"
Option "XkbLayout" "us"
Option "XkbVariant" "altgr-intl"
EndSection
画面DPI設定(xorg.conf): あまりに字が細かくてツライ人向け
code:/etc/X11/xorg.conf.d/01-pinebook-11-screen.conf
Section "Monitor"
Identifier "Pinebook 11.6 inch monitor"
DisplaySize 256.8 144.5 # millimeters, 11.6 inch screen
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Pinebook 11.6 inch monitor"
EndSection
NetBSDでのファンクションキーの設定
NetBSDでは、ファンクションキーはUHIDデバイスとして認識されます。
以下のような設定を行うと、それなりにFnキーを使うことができます。
[Fn]+[ファンクションキー]の設定(uhid)
table:Fn+ファンクションキー
キー 刻印 イベント 動作
Fn+Esc 眠る月 スリープ(して欲しい) Generic_Desktop:System_Control.Generic_Desktop:System_Sleep
Fn+F1 家 /etc/powerd/actions/AC_Homeを起動 Consumer:Consumer_Control.Consumer:AC_Home
Fn+F2 マウスon/off タッチパッドのオン・オフを切り替える ハードウエアで実装
Fn+F3 音量ダウン 音量を1段階下げる Consumer:Consumer_Control.Consumer:Volume_Down
Fn+F4 音量アップ 音量を1段階上げる Consumer:Consumer_Control.Consumer:Volume_Up
Fn+F5 音量ミュート 音声をミュートする Consumer:Consumer_Control.Consumer:Mute
code:/etc/usbhidaction.conf
Generic_Desktop:System_Control.Generic_Desktop:System_Sleep 1
/etc/powerd/scripts/sleep_button System_Sleep pressed
Consumer:Consumer_Control.Consumer:AC_Home 1
/etc/powerd/scripts/hotkey_button AC_Home pressed
Consumer:Consumer_Control.Consumer:Volume_Down 1
mixerctl -n -w outputs.master--
Consumer:Consumer_Control.Consumer:Volume_Up 1
mixerctl -n -w outputs.master++
Consumer:Consumer_Control.Consumer:Mute 1
mixerctl -n -w outputs.mute++
code:shell
# /usr/bin/usbhidaction -c /etc/usbhidaction.conf -f /dev/uhid0 -i -p /var/run/usbhidaction-uhid0.pid
# /usr/bin/usbhidaction -c /etc/usbhidaction.conf -f /dev/uhid1 -i -p /var/run/usbhidaction-uhid1.pid
その他、利用可能なFn+ファンクションキー
/etc/powerd/scripts/hotkey_buttonを割り当てると良さそう
table:Fn+ファンクションキー
キー 刻印 イベント
Fn+F6 ▶︎/一時停止 Consumer:Consumer_Control.Consumer:Play/Pause
Fn+F7 巻戻(◀◀︎) Consumer:Consumer_Control.Consumer:Scan_Previous_Track
Fn+F8 進める(▶▶) Consumer:Consumer_Control.Consumer:Scan_Next_Track
参考: dmesg
code:shell
$ dmesg -t |grep hid
uhidev0 at uhub4 port 1 configuration 1 interface 0
uhidev0: HAILUCK CO.,LTD (0x258a) USB KEYBOARD (0x000c), rev 1.10/1.00, addr 3, iclass 3/1
ukbd0 at uhidev0: 8 Variable keys, 6 Array codes
uhidev1 at uhub4 port 1 configuration 1 interface 1
uhidev1: HAILUCK CO.,LTD (0x258a) USB KEYBOARD (0x000c), rev 1.10/1.00, addr 3, iclass 3/0
uhidev1: 9 report ids
ums0 at uhidev1 reportid 1: 5 buttons, W and Z dirs
uhid0 at uhidev1 reportid 2: input=1, output=0, feature=0
uhid1 at uhidev1 reportid 3: input=3, output=0, feature=0
uhid2 at uhidev1 reportid 5: input=0, output=0, feature=5
uhid3 at uhidev1 reportid 6: input=0, output=0, feature=1039
uhid4 at uhidev1 reportid 9: input=1, output=0, feature=0
UHID on NetBSD
他にも以下のようなイベントがUHID経由で取れるようです。
全てがキーに割り当てられているわけでは無いので、使えるかどうかは微妙です
code:shell
pinebook% sudo usbhidctl -f /dev/uhid0 -r
Report descriptor:
Collection page=Generic_Desktop usage=System_Control
Input size=1 count=1 page=Generic_Desktop usage=System_Power_Down, logical range 0..1
Input size=1 count=1 page=Generic_Desktop usage=System_Sleep, logical range 0..1
Input size=1 count=1 page=Generic_Desktop usage=System_Wake_Up, logical range 0..1
End collection
Total input size 1 bytes
Total output size 0 bytes
Total feature size 0 bytes
pinebook% sudo usbhidctl -f /dev/uhid1 -r
Report descriptor:
Collection page=Consumer usage=Consumer_Control
Input size=1 count=1 page=Consumer usage=Scan_Next_Track, logical range 0..1
Input size=1 count=1 page=Consumer usage=Scan_Previous_Track, logical range 0..1
Input size=1 count=1 page=Consumer usage=0x006f, logical range 0..1
Input size=1 count=1 page=Consumer usage=0x0070, logical range 0..1
Input size=1 count=1 page=Consumer usage=Mute, logical range 0..1
Input size=1 count=1 page=Consumer usage=Daily, logical range 0..1
Input size=1 count=1 page=Consumer usage=Volume_Up, logical range 0..1
Input size=1 count=1 page=Consumer usage=Volume_Down, logical range 0..1
Input size=1 count=1 page=Consumer usage=AL_Consumer_Control_Configuration, logical range 0..1
Input size=1 count=1 page=Consumer usage=AL_Local_Machine_Browser, logical range 0..1
Input size=1 count=1 page=Consumer usage=AL_Spreadsheet, logical range 0..1
Input size=1 count=1 page=Consumer usage=AL_Presentation_App, logical range 0..1
Input size=1 count=1 page=Consumer usage=AL_Email_Reader, logical range 0..1
Input size=1 count=1 page=Consumer usage=AL_Calculator, logical range 0..1
Input size=1 count=1 page=Consumer usage=Stop, logical range 0..1
Input size=1 count=1 page=Consumer usage=Play/Pause, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Search, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Home, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Back, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Forward, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Stop, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Refresh, logical range 0..1
Input size=1 count=1 page=Consumer usage=AC_Bookmarks, logical range 0..1
Input size=1 count=1 page=Consumer usage=0x02b1, logical range 0..1
End collection
Total input size 3 bytes
Total output size 0 bytes
Total feature size 0 bytes
NetBSD on Pinebookで現状でわからないこと
現状、むとうがわかっていないことは、以下のとおりです。
Fn+sleepで、suspendする方法がわからない
/etc/powerd/scripts/sleep_buttonからスリープコマンドを呼び出す
sysctl hw.acpi.sleep.state, machdep.xen.suspendも/usr/sbin/apmも無い
NetBSD/aarch64でsuspendするにはどうするの?
V4L(/dev/video0)を使う方法がよくわからない
NG: xawtv, mpv: 後者はkernel panicするがebijunさん環境ではパッチがあたっていて利用可能らしい
アプリケーション
最新のfireroxが動くまで、あとすこしか? (rustの問題?)
ibus-mozcがうまく動かない
FreeBSD on Pinebook
おわりに
Pinebookは、$99.99の割には十分あそべます
まあ、ただ安価機種なので、過剰な期待は禁物!!
まだまだ、NetBSDで快適に生活するために、必要な作業はあります!!
さあ、購入しましょう!!